<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Selects extends CI_Model {

    function __construct(){
        parent::__construct();
    }

    public function getLogs($quem, $idQuem, $acao, $onde = "", $idOnde = ""){
        $tabela_quem = explode("_", $quem);
        if(count($tabela_quem > 1)) $tabela_quem = $tabela_quem[0];
        else $tabela_quem = $quem;

        if($onde != "0"){
            $tabela_onde = " JOIN $onde";
            $nome_onde = ", $onde.nome AS onde_nome";
            if($idOnde != "0"){
                $where_idOnde = "AND log.idOnde = '$idOnde' AND log.idOnde = $onde.id".ucfirst($onde);
            }
            else{
                $where_idOnde = "AND log.idOnde = $onde.id".ucfirst($onde);
            }
        }
        else {
            $tabela_onde = "";
            $nome_onde = "";
        }

        $select = "*, $tabela_quem.nome AS quem_nome $nome_onde FROM
            log JOIN $tabela_quem $tabela_onde
            WHERE log.acao = '$acao'
            AND log.idQuem = '$idQuem'
            AND log.idQuem = $tabela_quem.id".ucfirst($tabela_quem)."
            AND log.quem LIKE '%$quem%'
            AND log.onde = '$onde'
            $where_idOnde
            ORDER BY log.dataLog DESC";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    /********************PEDIDOS PRINCIPAIS*************************/

     /** Retorna todos pedidos. Se dado um status, retorna somente os do dado status.
      * São ordenados por cliente.
     * @param array $idUsuarios
     * @param string $status
     * @return query
     */
    public function getPedidoProdutoFornecedorUsuarioCliente($status = "", $datamin = "", $datamax = ""){
        if ($status != "") $status = "AND pedido_produto.status = '$status' ";
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";


        $select = "produto.nome AS pnome, produto.preco, produto.idProduto,  produto.comissao, pedido_produto.quantidade, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.razaoSocial AS frazaoSocial, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario,";
        $select .= "cliente.nome AS cnome, cliente.idCliente, cliente.tipoPessoa, cliente.razaoSocial as crazaoSocial, pedido_produto.status FROM
            cliente INNER JOIN usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND
            produto.idFornecedor = fornecedor.idFornecedor AND
            usuario.idCliente = cliente.idCliente
            $status
            $datamin
            $datamax
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido, fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

     /** Retorna todos pedidos em andamento, concatenando por fornecedor, de froma que possa diferenciar
      * os fornecedores que possuem pedidos ainda nao verificados
      * São ordenados por fornecedor
     * @param array $idUsuarios
     * @param string $status
     * @return query
     */
    public function getPedidoProdutoFornecedorUsuarioClienteAlerta(){

        $select = "produto.nome AS pnome, produto.preco, produto.idProduto, fornecedor.email, fornecedor.alerta, pedido_produto.quantidade, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.telefone, fornecedor.celular, fornecedor.nome AS fnome, fornecedor.razaoSocial AS frazaoSocial, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario,";
        $select .= "cliente.nome AS cnome, cliente.idCliente, cliente.tipoPessoa, cliente.razaoSocial as crazaoSocial, pedido_produto.status FROM
            cliente INNER JOIN usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND
            produto.idFornecedor = fornecedor.idFornecedor AND
            usuario.idCliente = cliente.idCliente AND
            pedido_produto.status = 'andamento' 
            GROUP BY fornecedor.idFornecedor 
            ORDER BY fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
     /** Retorna todos pedidos. Se dado um status, retorna somente os do dado status.
      * São ordenados por cliente.
     * @param array $idUsuarios
     * @param string $status
     * @return query
     */
    public function getPedidoProdutoFornecedorUsuarioClienteOrderByFornecedor($datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND status.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND status.dataCadastro <=  '$datamax'";


        $select = "produto.nome AS pnome, produto.preco, produto.idProduto, produto.comissao, pedido_produto.quantidade,";
        $select .= "pedido.idPedido, fornecedor.razaoSocial AS frazaoSocial, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario,";
        $select .= "cliente.nome AS cnome, cliente.idCliente, cliente.tipoPessoa, cliente.razaoSocial as crazaoSocial, pedido_produto.status,";
        $select .= "status.dataCadastro FROM
            cliente INNER JOIN usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN status INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            status.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND
            status.idPedido = pedido.idPedido AND
            produto.idFornecedor = fornecedor.idFornecedor AND
            usuario.idCliente = cliente.idCliente AND
            status.idPedido = pedido_produto.idPedido AND
            status.idProduto = pedido_produto.idProduto AND
            status.status_antigo = 'andamento' AND
            status.status_novo = 'enviado'
            $status
            $datamin
            $datamax
            ORDER BY fornecedor.idFornecedor, pedido.dataCadastro DESC, pedido.idPedido, ";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
     /** Retorna todos pedidos de um Cliente. Se dado um status, retorna somente os do dado status
     * @param array $idUsuarios
     * @param string $status
     * @return query
     */
    public function getPedidoProdutoFornecedorUsuarioByCliente($idCliente, $status = "", $datamin = "", $datamax = ""){
        if ($status != "") $status = "AND pedido_produto.status = '$status' ";
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";

        $select = "produto.nome AS pnome, produto.preco, produto.idProduto, pedido_produto.quantidade, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.razaoSocial, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario, pedido_produto.status FROM
            usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND
            produto.idFornecedor = fornecedor.idFornecedor AND
            usuario.idCliente = '$idCliente'
            $status
            $datamin
            $datamax
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido, fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
    
      /** Retorna todos os pedidos de um fornecedor. Se dado um status, retorna somente os do dado status
     *
     * @param int $idUsuario
     * @param string $status
     * @return query ou false
     */

     public function getPedidoProdutosUsuarioClienteByFornecedor($idFornecedor, $status, $datamin = "", $datamax = ""){
        if ($status != "") $status = "AND pedido_produto.status = '$status' ";
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";


        $select = "produto.nome AS pnome, produto.preco, produto.idProduto, pedido_produto.quantidade, pedido.dataCadastro,";
        $select .= "pedido.idPedido, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario,";
        $select .= "cliente.nome AS cnome, cliente.idCliente, cliente.tipoPessoa, cliente.razaoSocial, pedido_produto.status FROM
            cliente INNER JOIN usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN produto WHERE
            produto.idFornecedor = $idFornecedor AND
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND
            usuario.idCliente = cliente.idCliente
            $status
            $datamin
            $datamax
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
  

     /** Retorna todos os pedidos de um usuario. Dados
     *
     * @param int $idUsuario
     * @return query ou false
     */
    public function getPedidoProdutoFornecedorUsuarioByUsuario($idUsuario, $status = "", $datamin = "", $datamax = ""){
        if ($status != "") $status = "AND pedido_produto.status = '$status' ";
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";
        //$select = "* FROM (pedido NATURAL JOIN pedido_produto) NATURAL JOIN produto WHERE pedido.IdUsuario = $id";
        $select = "produto.nome AS pnome, produto.preco, produto.descricao, pedido_produto.quantidade, pedido_produto.status, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.nome AS fnome, produto.idFornecedor FROM
            pedido_produto INNER JOIN pedido INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = $idUsuario
            AND pedido_produto.idProduto = produto.idProduto
            AND pedido_produto.idPedido = pedido.idPedido
            AND produto.idFornecedor = fornecedor.idFornecedor
            $status
            $datamin
            $datamax
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido, fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
    /******************************FIM PEDIDOS PRINCIPAIS ************************************/

    
     /** Retorna todos os pedidos em 'andamento' de um usuario. Dados
     *
     * @param int $idUsuario
     * @return query ou false
     */
    public function getPedidoProdutoFornecedorUsuarioAndamentoByUsuario($idUsuario){
        $select = "produto.nome AS pnome, produto.tipo, produto.destaque, produto.preco, produto.descricao, pedido_produto.quantidade, pedido_produto.quantidade.status, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.nome AS fnome, produto.idFornecedor FROM
            pedido_produto INNER JOIN pedido INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = $idUsuario
            AND pedido_produto.idProduto = produto.idProduto
            AND pedido_produto.idPedido = pedido.idPedido
            AND pedido_produto.status = 'andamento'
            AND produto.idFornecedor = fornecedor.idFornecedor
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido, fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }


    /** Retorna todas Visualizações de um Cliente
     * @param array $idUsuarios
     * @return query
     */
    public function getPedidoProdutoFornecedorUsuarioAndamentoByCliente($idCliente){
        $select = "produto.nome AS pnome, produto.preco, produto.idProduto, produto.descricao, pedido_produto.quantidade, pedido.dataCadastro,";
        $select .= "pedido.idPedido, fornecedor.razaoSocial, produto.idFornecedor, usuario.nome AS unome, usuario.idUsuario, pedido_produto.status FROM
            usuario INNER JOIN pedido INNER JOIN pedido_produto INNER JOIN produto INNER JOIN fornecedor WHERE
            pedido.idUsuario = usuario.idUsuario AND
            pedido_produto.idProduto = produto.idProduto AND
            pedido_produto.idPedido = pedido.idPedido AND 
            produto.idFornecedor = fornecedor.idFornecedor AND
            (pedido_produto.status = 'andamento' OR pedido_produto.status = 'enviado')
            usuario.idCliente = $idCliente
            ORDER BY pedido.dataCadastro DESC, pedido.idPedido, fornecedor.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }


    /** Retorna todas Visualizações de um Cliente
     * @param array $idCliente
     * @return query
     */
    public function getUsuarioProdutoVizualizacaoByCliente($idCliente){
        $select = "usuario.nome AS unome, usuario.email, usuario.idUsuario, produto.idProduto, produto.nome AS pnome, vizualizacao.dataCadastro FROM
            produto INNER JOIN vizualizacao INNER JOIN usuario WHERE usuario.idUsuario = vizualizacao.IdUsuario AND
            produto.idProduto = vizualizacao.idProduto AND usuario.idCliente = $idCliente";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
    
    /** Retorna todos Interesses de um Cliente
     *
     * @param array $idUsuarios
     * @return query
     */
    public function getUsuarioProdutoInteresseByCliente($idCliente){
        $select = "usuario.nome AS unome, usuario.email, usuario.idUsuario, produto.idProduto, produto.nome AS pnome, interesse.dataCadastro FROM
            produto INNER JOIN interesse INNER JOIN usuario WHERE usuario.idUsuario = interesse.IdUsuario AND
            produto.idProduto = interesse.idProduto AND usuario.idCliente = $idCliente";
        
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    /** Retorna uma lista de produtos com informações do fornecedor de uma dada categoria. Ordenamento por fornecedor
     *
     * @param int $idCategoria
     * @return query ou false
     */
    public function getProdutoFornecedorByCategoria($idCategoria){
        $select = "fornecedor.email, fornecedor.nome AS fnome, fornecedor.razaoSocial, fornecedor.idFornecedor, fornecedor.sobrenome, ";
        $select.= "produto.nome AS pnome, produto.tipo, produto.destaque, produto.preco, produto.idProduto, produto.descricao, produto.quantidade, produto.autorizado FROM
            fornecedor INNER JOIN produto WHERE produto.idFornecedor = fornecedor.idFornecedor AND produto.idCategoria = $idCategoria
            AND produto.autorizado = true
            ORDER BY produto.idFornecedor, (CASE WHEN produto.tipo='normal' THEN 1 END)";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

/** Retorna todos os produtos, cada um com informações de seu fornecedor
 *
 * @return query ou false
 */
    public function listarProdutoFornecedores(){
        $select = "fornecedor.email,fornecedor.nome AS fnome, fornecedor.idFornecedor, fornecedor.sobrenome, ";
        $select.= "produto.nome AS pnome, produto.idProduto, produto.descricao, produto.quantidade, produto.autorizado FROM
            fornecedor INNER JOIN produto WHERE produto.idFornecedor = fornecedor.idFornecedor
            ORDER BY produto.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    /** Retorna um produto dada a $id e dados de seu fornecedor
     *
     * @param int $idCategoria
     * @return query ou false
     */

    public function getProdutoFornecedor($idProduto){
        $select = "fornecedor.email, fornecedor.nome AS fnome, fornecedor.idFornecedor, fornecedor.razaoSocial, fornecedor.sobrenome, produto.preco, ";
        $select.= "produto.nome AS pnome, produto.idProduto, produto.descricao, produto.quantidade, produto.autorizado FROM
            fornecedor INNER JOIN produto WHERE produto.idFornecedor = fornecedor.idFornecedor AND produto.idProduto = $idProduto
            ORDER BY produto.idFornecedor";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query->row(0);
        else
            return false;
    }

    /** Faz a busca no db para encontrar um fornecedor entre os campos "nome", "razaoSocial" ou "sobrenome"
     *
     * @param int $idCategoria
     * @return query ou false
     */

    public function getFornecedorBusca($str){
        $select = "* FROM fornecedor WHERE ";
        $frase = explode(" ", $str);
        foreach ($frase as $campo => $nome){
            if ($campo != 0)
                $select.= "OR";
            $select.= "nome LIKE '%$nome%' OR sobrenome LIKE '%$nome%' OR razaoSocial LIKE '%$nome%'";
        }

        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }


    /** Retorna os produtos favoritos de um dado usuario
     *
     * @param int $idCategoria
     * @return query ou false
     */
    public function getUsuarioProdutoInteresse($idUsuario){
        $select = "* FROM interesse INNER JOIN produto WHERE produto.idProduto = interesse.idProduto AND interesse.idUsuario = $idUsuario AND produto.autorizado = 1";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
       
    }

/** Retorna todos os pedidos ja feitos que estao em 'andamento'
 *
 * @return query ou false
 */
    public function getPedidoAndamento(){
        //$select = "* FROM (pedido NATURAL JOIN pedido_produto) NATURAL JOIN produto WHERE pedido.IdUsuario = $id";
        $select = "produto.nome AS pnome, produto.preco, produto.descricao, pedido_produto.quantidade, pedido.dataCadastro, pedido.idPedido, usuario.idUsuario, usuario.nome AS unome FROM
            usuario INNER JOIN pedido INNER JOIN pedido_produto  INNER JOIN produto WHERE pedido.idUsuario = usuario.idUsuario
            AND pedido_produto.idProduto = produto.idProduto AND pedido_produto.idPedido = pedido.idPedido
            AND pedido_produto.status = 'andamento'";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }


/** Retorna uma lista de pedidos de um determinado fornecedor passado por parametro
 *
 * @param int $idFornecedor
 * @return query
 */
     public function getPedidoProdutosUsuarioAndamentoByFornecedor($idFornecedor, $datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";
        //$select = "* FROM (pedido NATURAL JOIN pedido_produto) NATURAL JOIN produto WHERE pedido.IdUsuario = $id";
        $select = "usuario.nome AS unome, produto.nome, produto.preco, produto.descricao, produto.idProduto, pedido_produto.quantidade,  pedido_produto.status, pedido.dataCadastro, pedido.idPedido FROM
            produto INNER JOIN pedido_produto INNER JOIN pedido INNER JOIN usuario WHERE produto.idFornecedor = $idFornecedor
            AND pedido_produto.idProduto = produto.idProduto
            AND pedido_produto.idPedido = pedido.idPedido
            AND (pedido_produto.status = 'andamento' OR pedido_produto.status = 'enviado')
            AND pedido.idUsuario = usuario.idUsuario
            $datamin
            $datamax
            ORDER BY pedido.dataCadastro DESC";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }


     public function getPedidoProdutosUsuarioFinalizadoByFornecedor($idFornecedor, $datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND pedido.dataCadastro >=  '$datamin'";
        if ($datamax != "" ) $datamax = "AND pedido.dataCadastro <=  '$datamax'";
        //$select = "* FROM (pedido NATURAL JOIN pedido_produto) NATURAL JOIN produto WHERE pedido.IdUsuario = $id";
        $select = "usuario.nome AS unome, produto.nome, produto.preco, produto.descricao, produto.idProduto, pedido_produto.quantidade,  pedido_produto.status, pedido.dataCadastro, pedido.idPedido FROM
            produto INNER JOIN pedido_produto INNER JOIN pedido INNER JOIN usuario WHERE produto.idFornecedor = $idFornecedor
            AND pedido_produto.idProduto = produto.idProduto 
            AND pedido_produto.idPedido = pedido.idPedido
            AND pedido_produto.status = 'finalizado'
            AND pedido.idUsuario = usuario.idUsuario
             $datamin
            $datamax
            ORDER BY pedido.idPedido, pedido.dataCadastro";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getIntencaoClienteUsuarioByCategoria($idCategoria){
        $select = "usuario.nome AS unome, usuario.sobrenome AS usobrenome, usuario.idUsuario, ";
        $select.= "cliente.email AS cemail, cliente.razaoSocial, cliente.sobrenome AS sobrenome,";
        $select.= "intencao.dataCadastro, intencao.data, intencao.reservar, intencao.nome AS inome, cliente.nome as nome,";
        $select.= "intencao.idIntencao, usuario.email AS uemail, intencao.idCategoria, intencao.quantidade, intencao.descricao FROM
                cliente INNER JOIN usuario INNER JOIN intencao WHERE
                usuario.idUsuario = intencao.idUsuario AND
                usuario.idCliente = cliente.idCliente AND
                intencao.idCategoria = '$idCategoria'";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getIntencaoCliente($idCliente, $datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND intencao.dataCadastro >= '$datamin'";
        if ($datamax != "" ) $datamax = "AND intencao.dataCadastro <= '$datamax'";
        $select = "usuario.nome AS unome, usuario.idUsuario, intencao.dataCadastro, intencao.data, intencao.idIntencao,intencao.idCategoria, intencao.nome AS inome, intencao.descricao FROM
                usuario INNER JOIN intencao WHERE
                usuario.idUsuario = intencao.idUsuario AND
                usuario.idCliente = $idCliente
                $datamin                $datamax";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getIntencaoUsuario($idUsuario, $datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND intencao.data>= '$datamin'";
        if ($datamax != "" ) $datamax = "AND intencao.data<= '$datamax'";
        $select = "usuario.nome AS unome, usuario.idUsuario, intencao.data, intencao.dataCadastro,";
        $select.= "intencao.idIntencao, intencao.idCategoria, intencao.nome AS inome, intencao.quantidade FROM
                usuario INNER JOIN intencao WHERE
                usuario.idUsuario = intencao.idUsuario AND
                usuario.idUsuario = $idUsuario
                $datamin
                $datamax";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }
    
    public function listarIntencao($data_atual){

        $select = "usuario.nome AS unome, intencao.idUsuario, intencao.idIntencao, intencao.data, intencao.dataCadastro, categoria.nome AS categ, categoria.min_intencao, ";
        $select .= "cliente.idCliente, cliente.nome AS cnome, intencao.idCategoria, intencao.nome AS inome,";
        $select .= "intencao.descricao, SUM(intencao.quantidade) AS quantidade_total, COUNT(intencao.idCategoria) AS num_cadastros FROM
                usuario INNER JOIN cliente INNER JOIN intencao INNER JOIN categoria WHERE
                usuario.idUsuario = intencao.idUsuario AND
                categoria.idCategoria = intencao.idCategoria AND
                usuario.idCliente = cliente.idCliente AND
                intencao.data > '$data_atual'
                GROUP BY intencao.idCategoria";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getIntencaoProduto($data_atual, $idCategoria){

        $select = "categoria.nome AS categ, categoria.min_intencao, categoria.idProduto, categoria.preco, ";
        $select .= "intencao.idCategoria, intencao.nome AS inome,";
        $select .= "intencao.descricao, SUM(intencao.quantidade) AS quantidade_total, COUNT(intencao.idCategoria) AS num_cadastros FROM
                intencao INNER JOIN categoria WHERE
                intencao.idCategoria = '$idCategoria' AND
                categoria.idCategoria = intencao.idCategoria AND
                intencao.data > '$data_atual'
                GROUP BY intencao.idCategoria";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query->row(0);
        else
            return false;
    }

    public function getIntencaoCategoria($idCategoria, $datamin = "", $datamax = ""){
        if ($datamin != "" ) $datamin = "AND intencao.data >= '$datamin'";
        if ($datamax != "" ) $datamax = "AND intencao.data <= '$datamax'";

        $select = "usuario.nome AS unome, intencao.idUsuario, intencao.idIntencao, intencao.dataCadastro, intencao.data,  categoria.nome AS categ, ";
        $select .= "cliente.idCliente, cliente.nome AS cnome, intencao.idCategoria, intencao.quantidade, intencao.nome AS inome, intencao.descricao, intencao.quantidade FROM
                usuario INNER JOIN cliente INNER JOIN intencao INNER JOIN categoria WHERE
                usuario.idUsuario = intencao.idUsuario AND
                categoria.idCategoria = intencao.idCategoria AND
                categoria.idCategoria = '$idCategoria' AND
                usuario.idCliente = cliente.idCliente
                $datamin
                $datamax
                ORDER BY intencao.data DESC";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getCategoriaAtualPais($idCategoria){

        $select = "usuario.nome AS unome, intencao.idUsuario, intencao.idIntencao, intencao.dataCadastro, categoria.nome AS categ, ";
        $select .= "cliente.idCliente, cliente.nome AS cnome, intencao.idCategoria, intencao.nome AS inome, intencao.descricao, intencao.quantidade FROM
                usuario INNER JOIN cliente INNER JOIN intencao INNER JOIN categoria WHERE
                usuario.idUsuario = intencao.idUsuario AND
                categoria.idCategoria = intencao.idCategoria AND
                categoria.idCategoria = '$idCategoria' AND
                usuario.idCliente = cliente.idCliente
                $datamin
                $datamax";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getProdutoFornecedorDestaque(){
        $select = "produto.preco, produto.nome, produto.precoAntigo, produto.idProduto, produto.idFornecedor, fornecedor.razaoSocial, ";
        $select.= "produto.compraColetivaMin, produto.tipo, COUNT(pedido_produto.idProduto) AS solicitacoes_total FROM ";
        $select.= "pedido_produto INNER JOIN produto INNER JOIN fornecedor WHERE 
                produto.idFornecedor = fornecedor.idfornecedor AND
                produto.idProduto = pedido_produto.idProduto AND 
                produto.destaque = '1' AND 
                produto.autorizado = '1'
                GROUP BY produto.idProduto";
        $this->db->select($select);
        $query = $this->db->get();
        if($query->num_rows() > 0 )
            return $query;
        else
            return false;
    }

    public function getClienteOrUsuarioEmail($email){
    $select = "usuario.email FROM cliente INNER JOIN usuario WHERE usuario.idCliente = cliente.idCliente AND usuario.email = '$email'";
    $this->db->select($select);
    $query = $this->db->get();
    if($query->num_rows() > 0 )
        return $query->row(0);
    else
        return false;
    }
}
